package com.suyx.job.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @Auther: lanyanhua
 * @Date: 2018/9/26 0026 15:09
 * @Description:
 */
public class DateUtils {
    /**
     * 获取当前时间   转换为yyyy-MM-dd HH:mm:ss格式
     */
    public static String getStringDate() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(new Date());
    }

    /**
     * 获取当前时间    转换为yyyy-MM-dd格式
     */
    public static String getStringDateYMD() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        return format.format(new Date());
    }

    /**
     * 通过指定转换类型参数
     *
     * @return 返回String当前时间
     */
    public static String getStringDate(String sdf) {
        SimpleDateFormat format = new SimpleDateFormat(sdf);
        return format.format(new Date());
    }

    /**
     * 通过指定转换类型和日期参数 返回字符类型 sdf : yyyy-MM-dd
     */
    public static String getStringDate(Date date) {
        return getStringDate("yyyy-MM-dd", date);
    }

    /**
     * 通过指定转换类型和日期参数 返回字符类型
     */
    public static String getStringDate(String sdf, String date) throws ParseException {
        return getStringDate(sdf, getDate(date));
    }

    /**
     * 通过指定转换类型和日期参数 返回字符类型   * 转换为默认格式   * @return
     */
    public static String getStringDate(String sdf, Date date) {
        SimpleDateFormat format = new SimpleDateFormat(sdf);
        return format.format(date);
    }

    /**
     * 通过参数转换时间返回date类型    转换为默认格式
     */
    public static Date getDate(String date) throws ParseException {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        return format.parse(date);
    }

    public static long getDatePoorSS(Date startDate) {
        return getDatePoor(startDate, "ss");
    }

    public static long getDatePoorMM(Date startDate) {
        return getDatePoor(startDate, "mm");
    }

    private static long getDatePoor(Date startDate, String s) {
        return getDatePoor(startDate, new Date(), s);
    }

    private static long getDatePoor(Date startDate, Date endDate, String s) {
        long ns = 1000;
        long nm = ns * 60;
        long nh = nm * 60;
        long nd = nh * 24;
        long diff = startDate.getTime() - endDate.getTime();
        if ("dd".equals(s)) {
            return diff / nd;
        }
        if ("hh".equals(s)) {
            return diff % nd / nh;
        }
        if ("mm".equals(s)) {
            return diff % nd % nh / nm;
        }
        return diff % nd % nh % nm / ns;
    }

}
